package com.niiwoo.civet.account.dto.request;

import com.niiwoo.tripod.lanmao.enums.AuditStatusEnum;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * 企业开户回调请求参数
 * @author TomXue
 * @date 2018-04-24
 **/
@Getter
@Setter
public class OpenCompanyAccountCallbackReqDTO implements Serializable {
    /**
     * 请求流水号
     */
    private String requestNo;

    /**
     * 调用状态（0 为调用成功、 1 为失败，返回 1 时请看【调用失败错误码】及错误码描述）
     */
    private String code;

    /**
     * 业务处理状态（处理失败 INIT；处理成功 SUCCESS），平台可根据非 SUCCESS 状态做相应处理，处理失败时可参考错误码及描述
     */
    private String status;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误描述
     */
    private String errorMessage;

    /**
     * 平台用户编号
     */
    private String platformUserNo;

    /**
     * 审核状态
     */
    private Byte auditStatus;

    /**
     * 用户角色
     */
    private Byte userRole;

    /**
     * 银行对公账户
     */
    private String bankcardNo;

    /**
     * 银行编码
     */
    private String bankcode;

    /**
     * 是否成功?
     * @return
     */
    public boolean isSuccess(){
        return code.equals("0") && status.equalsIgnoreCase("SUCCESS");
    }

    /**
     * 审核通过?
     * @return
     */
    public boolean isAuditPass(){
        return auditStatus.equals(AuditStatusEnum.PASSED.getValue());
    }

    /**
     * 审核退回?
     * @return
     */
    public boolean isAuditBack(){
        return auditStatus.equals(AuditStatusEnum.BACK.getValue());
    }

    /**
     * 审核拒绝?
     * @return
     */
    public boolean isAuditRefused(){
        return auditStatus.equals(AuditStatusEnum.REFUSED.getValue());
    }

    /**
     * 审核中?
     * @return
     */
    public boolean isAuditing(){
        return auditStatus.equals(AuditStatusEnum.AUDIT.getValue());
    }
}
